package com.lp.biz.train.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lp.biz.train.model.entity.BizTrainClass;
import com.lp.biz.train.model.query.*;
import com.lp.biz.train.model.vo.*;
import com.lp.common.entity.PageParams;
import com.lp.common.utils.CommonResult;

/**
 * @program: backend
 * @description:
 * @author: Ke.Song
 * @since: 2024-05-23 21:33:41
 */
public interface BizTrainClassService extends IService<BizTrainClass> {

    /**
     * 班主任获取班级列表
     *
     * @param query 分页参数
     * @return 查询列表
     */
    CommonResult getClasses(PageParams query);

    /**
     * 获取班级详情
     *
     * @param classId 班级Id
     * @return 查询结果
     */
    CommonResult getClassDetail(Integer classId);

    /**
     * 更新班级开始结束时间
     *
     * @param classId 班级id
     * @param params  时间参数
     */
    void updateClassDate(Integer classId, ClassUpdateDate params);

    /**
     * 删除班级
     * @param classId 班级id
     */
    void deleteClass(Integer classId);

    /**
     * 获取班级章节
     *
     * @param classId 班级id
     * @param query   查询参数
     * @return 查询结果
     */
    CommonResult getClassChapter(Integer classId, ClassChapterQuery query);

    /**
     * 发布章节
     *
     * @param classId   班级id
     * @param chapterId 章节id
     */
    void publishChapter(Integer classId, Integer chapterId);

    /**
     * 获取班级用户列表
     *
     * @param classId 班级id
     * @param query   查询参数
     * @return 查询结果
     */
    CommonResult getClassMemberList(Integer classId, ClassMemberQuery query);

    /**
     * 获取班级助教/导师
     *
     * @param classId 班级id
     * @return 查询结果
     */
    CommonResult getClassManage(Integer classId);

    /**
     * 班级学员转移归属
     *
     * @param classId      班级id
     * @param assignMember 学员列表
     */
    void assignToManager(Integer classId, ClassAssignMember assignMember);

    /**
     * 获取班级作业
     *
     * @param classId 班级id
     * @param query   分页参数
     * @return 查询结果
     */
    CommonResult getClassHomeworks(Integer classId, PageParams query);

    /**
     * 发布班级作业
     *
     * @param classId    班级id
     * @param homeworkId 作业id
     */
    void publishClassHomework(Integer classId, Integer homeworkId);

    /**
     * 获取班级已提交作业列表
     *
     * @param classId 班级id
     * @param query   分页参数
     * @return 查询结果
     */
    CommonResult submittedComment(Integer classId, SubmittedHomeworkQuery query);

    /**
     * 作业置顶/取消置顶
     *
     * @param classId   班级id
     * @param commentId 打卡id
     */
    void commentTop(Integer classId, Integer commentId);

    /**
     * 删除班级作业
     *
     * @param classId   班级id
     * @param commentId 作业id
     */
    void deleteComment(Integer classId, Integer commentId);

    /**
     * 获取班级未提交的作业列表
     *
     * @param classId 班级id
     * @param query   分页参数
     * @return 查询结果
     */
    CommonResult unsubmittedComment(Integer classId, SubmittedHomeworkQuery query);

    /**
     * 打卡增加点评
     *
     * @param classId    班级id
     * @param commentId  打卡id
     * @param addComment 点评参数
     */
    void addComment(Integer classId, Integer commentId, ClassAddComment addComment);

    /**
     * 获取打卡内容详情
     *
     * @param classId   班级id
     * @param commentId 打卡id
     * @return 查询结果
     */
    CommonResult getComment(Integer classId, Integer commentId);

    /**
     * 获取班级下的所有活动
     *
     * @param classId 班级id
     * @param query   分页参数
     * @return 查询结果
     */
    CommonResult getEvents(Integer classId, PageParams query);

    /**
     * 创建活动
     * @param event 活动参数
     * @param classId 班级id
     */
    void addEvents(ClassEventsCreate event, Integer classId);

    /**
     * 获取班级报名人员列表
     *
     * @param classId 班级id
     * @param eventId 活动id
     * @param query 分页参数
     * @return 查询结果
     */
    CommonResult getEventSignUp(Integer classId, Integer eventId, PageParams query);

    /**
     * 设置活动主持人
     * @param classId 班级id
     * @param eventId 活动id
     * @param moderator 主持人
     */
    void updateModerator(Integer classId, Integer eventId, ClassModerator moderator);

    /**
     * 获取班级未报名人员列表
     * @param classId 班级id
     * @param eventId 活动id
     * @param query 分页参数
     * @return 查询结果
     */
    CommonResult getNotEnrolled(Integer classId, Integer eventId, PageParams query);

    /**
     * 班级创建投票
     * @param classId 班级id
     * @param classVote 投片参数
     */
    void startVote(Integer classId, ClassVoteCreate classVote);

    /**
     * 获取班级投票详情
     * @param classId 班级id
     * @return 查询结果
     */
    CommonResult getVoteDetail(Integer classId);

    /**
     * 获取活动投票列表
     * @param classId 班级id
     * @param query 查询参数
     * @return 查询结果
     */
    CommonResult getVoteMembers(Integer classId, ClassVoteMembersQuery query);

    /**
     * 获取结营证书列表
     * @param query 查询参数
     * @return 查询结果
     */
    CommonResult getGraduationList(ClassGraduationQuery query);

    /**
     * 获取所有活动类型
     * @return 查询结果
     */
    CommonResult getTaskType();
}
